Digital Garden of Paul

Event-Driven Architecture

Event-Driven architecture is used for any kind of software architecture which is based on components communicating mainly or exclusively through events. This paradigm promotes the production, detection, consumption of and reaction to events. Events can be defined as "a significant change in state". In the context of Event-Driven architecture, the term "event" usually means "notification". Most GUIs are an example of an Event-Driven architecture. Where a click of a button is being propagated via an event.

By definition events do not travel, they just happen. As Event-Driven architectures are often built atop of a message-driven architecture the concept of an Event and a Message are interwoven. An event represents an observation about the world. They happened and can't be changed, as such they are immutable.

Event-Driven architectures allow for loosely-coupled software components and services. Utilising event emitters, event channels and event consumers to integrate the various elements. Emitters have the responsibility to detect, gather and transfer event. Event emitters are unaware of any consumers. Channels have the responsibility of applying a reaction as soon as an event has been published. Often this means forwarding the event to any subscribers of that event. Knowledge and correct distribution of the events is the main responsibility of a channel. Examples of channels are AMQP protocol based systems as AWS SQS or RabbitMQ.

Event-Driven Architecture